/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.reports;

/**
 *
 * @author Zully
 */
import com.losalpes.compras.*;
import com.losalpes.persistence.entity.Articulo;
import com.losalpes.persistence.entity.Compra;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.model.SelectItem;

/**
 *
 * @author integradores
 */
public class ReportsBean {

    @EJB
    private IComprasServices compraService;
    private ArrayList<Compra> compras;
    private ArrayList<Articulo> articulosInterior;
    private ArrayList<Articulo> articulosExterior;
    private ArrayList<String> ciudades;
    private Articulo masVendido;
    private Date fechaActual;
    private Date fechaInicial;
    private Date fechaFinal;
    private boolean opened;
    private String selectedItem;
    private double total;
    private String numeroDocumento;
    private Compra compra;

    /**
     * Constructor por defecto
     */
    public ReportsBean() {        
    }

    @PostConstruct
    public void inicializarReport()
    {
        this.compras = this.compraService.findAll();
        this.articulosExterior = new ArrayList<Articulo>();
        this.articulosInterior = new ArrayList<Articulo>();
        this.ciudades = new ArrayList<String>();
        this.ciudades = this.compraService.findAllCities();
        this.masVendido = new Articulo();
        this.opened = false;
        this.compra = new Compra();
    }

    public void getCompraByFecha() {
        this.opened = true;
        Date now = new Date();
        this.fechaActual = now;
        this.compras = this.compraService.findAllByDate(getFechaInicial(), getFechaFinal());
        
        if(compras.size() < 1)
            return;

        this.articulosExterior = this.compraService.findAllArticulosByTipoExterior(compras);
        this.articulosInterior = this.compraService.findAllArticulosByTipoInterior(compras);

        if (this.compras.size() == 0) {
            this.opened = false;
        }
    }

    
    public void getCompraByMasVendido() {
        this.opened = true;
        Date now = new Date();
        this.fechaActual = now;
        this.masVendido = this.compraService.findMostSold(this.fechaInicial,
                this.fechaFinal, this.selectedItem);

        if (this.masVendido.getCantidad() == 0) {
            this.opened = false;
        }
    }

    public void getCompraByCliente()
    {
        this.opened = true;
        Date now = new Date();
        this.fechaActual = now;
        this.compras = this.compraService.findAllByCustomerId(this.numeroDocumento,
                this.fechaInicial, this.fechaFinal);

        if (this.compras.size() == 0) {
            this.opened = false;
        }
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public Date getFechaInicial() {
        return fechaInicial;
    }

    public void setFechaInicial(Date fechaInicial) {
        this.fechaInicial = fechaInicial;
    }

    public Date getFechaActual() {
        return fechaActual;
    }

    public void setFechaActual(Date fechaActual) {
        this.fechaActual = fechaActual;
    }

    public List getArticulosExterior() {
        return this.articulosExterior;
    }

    public List getArticulosInterior() {
        return this.articulosInterior;
    }

    public boolean isOpened() {
        return opened;
    }

    public void setOpened(boolean opened) {
        this.opened = opened;
    }

    public double getTotal() {
        return this.compraService.getTotal(this.articulosExterior, this.articulosInterior);
    }

    public void setTotal(double total) {
        this.total = total;
    }

    public List getCiudades()
    {
        return ciudades;
    }

    /**
     * retorna los tipos de documento disponibles
     * @return
     */
    public SelectItem[] getSelectedItems() {
        SelectItem[] sitems = new SelectItem[this.ciudades.size()];
        for (int i = 0; i < sitems.length; i++) {
            sitems[i] = new SelectItem(this.ciudades.get(i));
            System.out.print("ciudad" + i);
        }

        return sitems;
    }

    public String getSelectedItem() {
        return selectedItem;
    }

    public void setSelectedItem(String selectedItem) {
        this.selectedItem = selectedItem;
    }

    public Articulo getMasVendido() {
        return masVendido;
    }

    public void setMasVendido(Articulo masVendido) {
        this.masVendido = masVendido;
    }

    public String getNumeroDocumento() {
        return numeroDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public List getCompras() {
        return compras;
    }

    public Compra getCompra() {
        return compra;
    }

    public void setCompra(Compra compra) {
        this.compra = compra;
    }
}
